/**
 * 
 * @author Ivam Henrique Marques dos Santos
 *         email: ivam.santos@skytef.com.br
 *         skype: ivam.santos.skytef
 *         telefone: +55 11 96214-7543
 */
package br.skytef.stmanager.daos;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import br.skytef.stmanager.entities.ClienteEntity;
import br.skytef.stmanager.utils.Pool;

/**
 * Class DAO ClienteDAO
 */
public class ClienteDAO {	
	/**
	 * Variável para conexão, obtido através de um Pool(br.skytef.stmanager.utils.Pool)
	 */
	private static Connection conexao = null;

	/**
	 * Inserir Cliente
	 * @param ClienteEntity
	 * @throws SQLException 
	 */
	public boolean inserir(ClienteEntity ce) throws SQLException{
		try {
			conexao = Pool.getConnection();
			String query = "INSERT INTO cliente(razaoSocial, nomeFantasia, cnpj, qtdLojas, movimentacao, "
					+ "dataMovimentacao,responsavel, responsavelEmail, atendSuporte, "
					+ "telefone,emailCliente, cliente, dataCancelamento, diaFaturado,"
					+ "cidade, uf, politica,categoria, data_inclusao,"
					+ "data_atualizacao, usuario_id,valorFaturado, valorSE, qtdPDV,"
					+ "valorGSurf, valorLyra, tipo_Cliente, idFaturamento, idSuporte, idParceiro, idCliente) "
					+ "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";

			PreparedStatement preparedStmt = conexao.prepareStatement(query);

			preparedStmt.setString 		(1, ce.getRazaoSocial());
			preparedStmt.setString 		(2, ce.getNomeFantasia());
			preparedStmt.setLong   		(3, ce.getCnpj());
			preparedStmt.setInt 		(4, ce.getQtdLojas());
			preparedStmt.setString 		(5, ce.getMovimentacao());
			preparedStmt.setString 		(6, ce.getDataMovimentacao());	
			preparedStmt.setString 		(7, ce.getResponsavel());
			preparedStmt.setString 		(8, ce.getResponsavelEmail());
			preparedStmt.setString 		(9, ce.getAtendSuporte());
			preparedStmt.setString 		(10, ce.getTelefone());
			preparedStmt.setString 		(11, ce.getEmailCliente());
			preparedStmt.setString 		(12, ce.getCliente());
			preparedStmt.setString		(13, ce.getDataCancelamento());
			preparedStmt.setInt			(14, ce.getDiaFaturado());
			preparedStmt.setString 		(15, ce.getCidade());
			preparedStmt.setString 		(16, ce.getUf());		
			preparedStmt.setString 		(17, ce.getPolitica());
			preparedStmt.setString 		(18, ce.getCategoria());
			preparedStmt.setTimestamp	(19, ce.getData_inclusao());
			preparedStmt.setTimestamp	(20,ce.getData_atualizacao());
			preparedStmt.setInt			(21, ce.getUsuario_id());
			preparedStmt.setDouble 		(22, ce.getValorFaturado());
			preparedStmt.setDouble 		(23, ce.getValorSE());
			preparedStmt.setInt			(24, ce.getQtdPDV());
			preparedStmt.setDouble		(25, ce.getValorGSurf());
			preparedStmt.setDouble		(26, ce.getValorLyra());
			preparedStmt.setString		(27, ce.getTipo_Cliente());
			preparedStmt.setInt			(28, ce.getIdFaturamento());
			preparedStmt.setInt			(29, ce.getIdSuporte());
			preparedStmt.setInt			(30, ce.getIdParceiro());
			preparedStmt.setInt			(31, ce.getIdCliente());
			preparedStmt.execute();			
			conexao.close();
			return true;

		} catch (SQLException e) {
			System.out.println("SQL erro: "+ e);
			conexao.close();
			return false;
		} catch (Exception e) {
			System.out.println("Geral erro: "+ e);
			conexao.close();
			return false;
		}
	}	
	public boolean alterar(ClienteEntity ce) throws SQLException{
		try {
			conexao = Pool.getConnection();

			String query = "UPDATE cliente SET razaoSocial=?, nomeFantasia=?, qtdLojas=?, movimentacao=?, dataMovimentacao=?, "
					+ "responsavel=?, responsavelEmail=?, atendSuporte=?, telefone=?,emailCliente=?, "
					+ "cliente=?, dataCancelamento=?, diaFaturado=?, cidade=?, uf=?, "
					+ "politica=?, categoria=?, data_inclusao=?, data_atualizacao=?, "
					+ "usuario_id=?, valorFaturado=?, valorSE=?, qtdPDV=?, valorGSurf=?, "
					+ "valorLyra=?, tipo_Cliente=?, idFaturamento=?, idSuporte=?, idParceiro=? WHERE idCliente=? ;";

			PreparedStatement preparedStmt = conexao.prepareStatement(query);

			preparedStmt.setString 		(1, ce.getRazaoSocial());
			preparedStmt.setString 		(2, ce.getNomeFantasia());
			preparedStmt.setInt 		(3, ce.getQtdLojas());
			preparedStmt.setString 		(4, ce.getMovimentacao());
			preparedStmt.setString 		(5, ce.getDataMovimentacao());	
			preparedStmt.setString 		(6, ce.getResponsavel());
			preparedStmt.setString 		(7, ce.getResponsavelEmail());
			preparedStmt.setString 		(8, ce.getAtendSuporte());
			preparedStmt.setString 		(9, ce.getTelefone());
			preparedStmt.setString 		(10, ce.getEmailCliente());
			preparedStmt.setString 		(11, ce.getCliente());
			preparedStmt.setString		(12, ce.getDataCancelamento());
			preparedStmt.setInt			(13, ce.getDiaFaturado());
			preparedStmt.setString 		(14, ce.getCidade());
			preparedStmt.setString 		(15, ce.getUf());		
			preparedStmt.setString 		(16, ce.getPolitica());
			preparedStmt.setString 		(17, ce.getCategoria());
			preparedStmt.setTimestamp	(18, ce.getData_inclusao());
			preparedStmt.setTimestamp	(19,ce.getData_atualizacao());
			preparedStmt.setInt			(20, ce.getUsuario_id());
			preparedStmt.setDouble 		(21, ce.getValorFaturado());
			preparedStmt.setDouble 		(22, ce.getValorSE());
			preparedStmt.setInt			(23, ce.getQtdPDV());
			preparedStmt.setDouble		(24, ce.getValorGSurf());
			preparedStmt.setDouble		(25, ce.getValorLyra());
			preparedStmt.setString		(26, ce.getTipo_Cliente());
			preparedStmt.setInt			(27, ce.getIdFaturamento());
			preparedStmt.setInt			(28, ce.getIdSuporte());
			preparedStmt.setInt			(29, ce.getIdParceiro());
			preparedStmt.setInt   		(30, ce.getIdCliente());
			preparedStmt.execute();
			conexao.close();
			return true;

		} catch (SQLException e) {
			System.out.println("SQL erro: "+ e);
			conexao.close();
			return false;
		} catch (Exception e) {
			System.out.println("Geral erro: "+ e);
			conexao.close();
			return false;
		}
	}

	/**
	 * Consultar Clientes na Base de Dados
	 * @return Lista de Clientes
	 */
	public List <ClienteEntity> listar(){
		List <ClienteEntity> clientes = null;
		ClienteEntity cliente;
		try {
			conexao = Pool.getConnection();
			Statement st = conexao.createStatement();
			ResultSet rs = st.executeQuery("SELECT * FROM cliente ORDER BY razaoSocial");
			if (rs.next()) {   
				clientes = new ArrayList<ClienteEntity>();
				do {                      
					cliente = new ClienteEntity();
					cliente.setTelefone(rs.getString("telefone"));
					cliente.setEmailCliente(rs.getString("emailCliente"));
					cliente.setRazaoSocial(rs.getString("razaoSocial"));
					cliente.setNomeFantasia(rs.getString("nomeFantasia"));
					cliente.setCnpj(rs.getLong("cnpj"));
					cliente.setQtdLojas(rs.getInt("qtdLojas"));
					cliente.setMovimentacao(rs.getString("movimentacao"));
					cliente.setDataMovimentacao(rs.getString("dataMovimentacao"));
					cliente.setResponsavel(rs.getString("responsavel"));
					cliente.setResponsavelEmail(rs.getString("responsavelEmail"));
					cliente.setAtendSuporte(rs.getString("atendSuporte"));
					cliente.setCliente(rs.getString("cliente"));
					cliente.setDataCancelamento(rs.getString("dataCancelamento"));
					cliente.setDiaFaturado(rs.getInt("diaFaturado"));
					cliente.setCidade(rs.getString("cidade"));
					cliente.setUf(rs.getString("uf"));
					cliente.setPolitica(rs.getString("politica"));
					cliente.setCategoria(rs.getString("categoria"));
					cliente.setData_atualizacao(rs.getTimestamp("data_atualizacao"));
					cliente.setUsuario_id(rs.getInt("usuario_id"));
					cliente.setIdCliente(rs.getInt("idCliente"));
					cliente.setValorFaturado(rs.getDouble("valorFaturado"));
					cliente.setValorSE(rs.getDouble("valorSE"));
					cliente.setValorGSurf(rs.getDouble("valorGSurf"));
					cliente.setQtdPDV(rs.getInt("qtdPDV"));
					cliente.setValorLyra(rs.getDouble("valorLyra"));
					cliente.setTipo_Cliente(rs.getString("tipo_Cliente"));
					cliente.setIdFaturamento(rs.getInt("idFaturamento"));
					cliente.setIdSuporte(rs.getInt("idSuporte"));
					cliente.setIdParceiro(rs.getInt("idParceiro"));
					clientes.add(cliente);  
				} while (rs.next());
			}
			conexao.close();
		} catch (SQLException e) {
			System.out.println("SQL erro: "+ e);
		} catch (Exception e) {
			System.out.println("Geral erro: "+ e);
		}
		return clientes;		
	}

	/**
	 * Consultar Clientes na Base de Dados por Status
	 * @return Lista de Clientes
	 */
	public List <ClienteEntity> listarStatus(String status){
		List <ClienteEntity> clientes = null;
		ClienteEntity cliente;
		try {
			conexao = Pool.getConnection();
			Statement st = conexao.createStatement();
			ResultSet rs = st.executeQuery("Select C.* from cliente C inner join divergenciaCliente DC on C.idCliente = DC.cliente_idCliente where DC.tipo = '"+ status +"';");
			if (rs.next()) {   
				clientes = new ArrayList<ClienteEntity>();
				do {                      
					cliente = new ClienteEntity();
					cliente.setTelefone(rs.getString("telefone"));
					cliente.setEmailCliente(rs.getString("emailCliente"));
					cliente.setRazaoSocial(rs.getString("razaoSocial"));
					cliente.setNomeFantasia(rs.getString("nomeFantasia"));
					cliente.setCnpj(rs.getLong("cnpj"));
					cliente.setQtdLojas(rs.getInt("qtdLojas"));
					cliente.setMovimentacao(rs.getString("movimentacao"));
					cliente.setDataMovimentacao(rs.getString("dataMovimentacao"));
					cliente.setResponsavel(rs.getString("responsavel"));
					cliente.setResponsavelEmail(rs.getString("responsavelEmail"));
					cliente.setAtendSuporte(rs.getString("atendSuporte"));
					cliente.setCliente(rs.getString("cliente"));
					cliente.setDataCancelamento(rs.getString("dataCancelamento"));
					cliente.setDiaFaturado(rs.getInt("diaFaturado"));
					cliente.setCidade(rs.getString("cidade"));
					cliente.setUf(rs.getString("uf"));
					cliente.setPolitica(rs.getString("politica"));
					cliente.setCategoria(rs.getString("categoria"));
					cliente.setData_atualizacao(rs.getTimestamp("data_atualizacao"));
					cliente.setUsuario_id(rs.getInt("usuario_id"));
					cliente.setIdCliente(rs.getInt("idCliente"));
					cliente.setValorFaturado(rs.getDouble("valorFaturado"));
					cliente.setValorSE(rs.getDouble("valorSE"));
					cliente.setValorGSurf(rs.getDouble("valorGSurf"));
					cliente.setQtdPDV(rs.getInt("qtdPDV"));
					cliente.setValorLyra(rs.getDouble("valorLyra"));
					cliente.setTipo_Cliente(rs.getString("tipo_Cliente"));
					cliente.setIdFaturamento(rs.getInt("idFaturamento"));
					cliente.setIdSuporte(rs.getInt("idSuporte"));
					cliente.setIdParceiro(rs.getInt("idParceiro"));
					clientes.add(cliente);  
				} while (rs.next());
			}
			conexao.close();
		} catch (SQLException e) {
			System.out.println("SQL erro: "+ e);
		} catch (Exception e) {
			System.out.println("Geral erro: "+ e);
		}
		return clientes;		
	}

	/**
	 * Consultar Cliente pelo CNPJ
	 * @return Cliente
	 */
	public ClienteEntity buscarCliente(long cnpj){
		ClienteEntity cliente = null;
		try	{
			conexao = Pool.getConnection();
			Statement st = conexao.createStatement();
			ResultSet rs = st.executeQuery("SELECT * FROM cliente WHERE cnpj = "+ cnpj +";");
			if (rs.next()) {
				do {                      
					cliente = new ClienteEntity();
					cliente.setTelefone(rs.getString("telefone"));
					cliente.setEmailCliente(rs.getString("emailCliente"));
					cliente.setRazaoSocial(rs.getString("razaoSocial"));
					cliente.setNomeFantasia(rs.getString("nomeFantasia"));
					cliente.setCnpj(rs.getLong("cnpj"));
					cliente.setQtdLojas(rs.getInt("qtdLojas"));
					cliente.setMovimentacao(rs.getString("movimentacao"));
					cliente.setDataMovimentacao(rs.getString("dataMovimentacao"));
					cliente.setResponsavel(rs.getString("responsavel"));
					cliente.setResponsavelEmail(rs.getString("responsavelEmail"));
					cliente.setAtendSuporte(rs.getString("atendSuporte"));
					cliente.setCliente(rs.getString("cliente"));
					cliente.setDataCancelamento(rs.getString("dataCancelamento"));
					cliente.setDiaFaturado(rs.getInt("diaFaturado"));
					cliente.setCidade(rs.getString("cidade"));
					cliente.setUf(rs.getString("uf"));
					cliente.setPolitica(rs.getString("politica"));
					cliente.setCategoria(rs.getString("categoria"));
					cliente.setData_atualizacao(rs.getTimestamp("data_atualizacao"));
					cliente.setUsuario_id(rs.getInt("usuario_id"));
					cliente.setIdCliente(rs.getInt("idCliente"));
					cliente.setIdCliente(rs.getInt("idCliente"));
					cliente.setValorFaturado(rs.getDouble("valorFaturado"));
					cliente.setValorSE(rs.getDouble("valorSE"));
					cliente.setValorGSurf(rs.getDouble("valorGSurf"));
					cliente.setQtdPDV(rs.getInt("qtdPDV"));
					cliente.setValorLyra(rs.getDouble("valorLyra"));
					cliente.setTipo_Cliente(rs.getString("tipo_Cliente"));
					cliente.setIdFaturamento(rs.getInt("idFaturamento"));
					cliente.setIdSuporte(rs.getInt("idSuporte"));
					cliente.setIdParceiro(rs.getInt("idParceiro"));
					cliente.setIdCliente(rs.getInt("idCliente"));
				} while (rs.next());
			}
			conexao.close();
			return cliente;
		}catch (SQLException e) {
			System.out.println("SQL erro: "+ e);
			return null;
		} catch (Exception e) {
			System.out.println("Geral erro: "+ e);
			return null;
		} 
	}

	public ClienteEntity buscarCliente(int idCliente){
		ClienteEntity cliente = null;
		try	{
			conexao = Pool.getConnection();
			Statement st = conexao.createStatement();
			ResultSet rs = st.executeQuery("SELECT * FROM cliente WHERE idCliente = "+ idCliente +";");
			if (rs.next()) {
				do {                      
					cliente = new ClienteEntity();
					cliente.setTelefone(rs.getString("telefone"));
					cliente.setEmailCliente(rs.getString("emailCliente"));
					cliente.setRazaoSocial(rs.getString("razaoSocial"));
					cliente.setNomeFantasia(rs.getString("nomeFantasia"));
					cliente.setCnpj(rs.getLong("cnpj"));
					cliente.setQtdLojas(rs.getInt("qtdLojas"));
					cliente.setMovimentacao(rs.getString("movimentacao"));
					cliente.setDataMovimentacao(rs.getString("dataMovimentacao"));
					cliente.setResponsavel(rs.getString("responsavel"));
					cliente.setResponsavelEmail(rs.getString("responsavelEmail"));
					cliente.setAtendSuporte(rs.getString("atendSuporte"));
					cliente.setCliente(rs.getString("cliente"));
					cliente.setDataCancelamento(rs.getString("dataCancelamento"));
					cliente.setDiaFaturado(rs.getInt("diaFaturado"));
					cliente.setCidade(rs.getString("cidade"));
					cliente.setUf(rs.getString("uf"));
					cliente.setPolitica(rs.getString("politica"));
					cliente.setCategoria(rs.getString("categoria"));
					cliente.setData_atualizacao(rs.getTimestamp("data_atualizacao"));
					cliente.setUsuario_id(rs.getInt("usuario_id"));
					cliente.setIdCliente(rs.getInt("idCliente"));
					cliente.setIdCliente(rs.getInt("idCliente"));
					cliente.setValorFaturado(rs.getDouble("valorFaturado"));
					cliente.setValorSE(rs.getDouble("valorSE"));
					cliente.setValorGSurf(rs.getDouble("valorGSurf"));
					cliente.setQtdPDV(rs.getInt("qtdPDV"));
					cliente.setValorLyra(rs.getDouble("valorLyra"));
					cliente.setTipo_Cliente(rs.getString("tipo_Cliente"));
					cliente.setIdFaturamento(rs.getInt("idFaturamento"));
					cliente.setIdSuporte(rs.getInt("idSuporte"));
					cliente.setIdParceiro(rs.getInt("idParceiro"));
				} while (rs.next());
			}
			conexao.close();			
		}catch (SQLException e) {
			System.out.println("SQL erro: "+ e);
		} catch (Exception e) {
			System.out.println("Geral erro: "+ e);
		} 
		return cliente;
	}

	public ClienteEntity buscarCliente(String razaoSocial){
		ClienteEntity cliente = null;
		try	{
			conexao = Pool.getConnection();
			Statement st = conexao.createStatement();
			ResultSet rs = st.executeQuery("SELECT * FROM cliente WHERE razaoSocial LIKE  '%"+ razaoSocial +"%' ORDER BY razaoSocial;");
			if (rs.next()) {
				do {                      
					cliente = new ClienteEntity();
					cliente.setTelefone(rs.getString("telefone"));
					cliente.setEmailCliente(rs.getString("emailCliente"));
					cliente.setRazaoSocial(rs.getString("razaoSocial"));
					cliente.setNomeFantasia(rs.getString("nomeFantasia"));
					cliente.setCnpj(rs.getLong("cnpj"));
					cliente.setQtdLojas(rs.getInt("qtdLojas"));
					cliente.setMovimentacao(rs.getString("movimentacao"));
					cliente.setDataMovimentacao(rs.getString("dataMovimentacao"));
					cliente.setResponsavel(rs.getString("responsavel"));
					cliente.setResponsavelEmail(rs.getString("responsavelEmail"));
					cliente.setAtendSuporte(rs.getString("atendSuporte"));
					cliente.setCliente(rs.getString("cliente"));
					cliente.setDataCancelamento(rs.getString("dataCancelamento"));
					cliente.setDiaFaturado(rs.getInt("diaFaturado"));
					cliente.setCidade(rs.getString("cidade"));
					cliente.setUf(rs.getString("uf"));
					cliente.setPolitica(rs.getString("politica"));
					cliente.setCategoria(rs.getString("categoria"));
					cliente.setData_atualizacao(rs.getTimestamp("data_atualizacao"));
					cliente.setUsuario_id(rs.getInt("usuario_id"));
					cliente.setIdCliente(rs.getInt("idCliente"));
					cliente.setIdCliente(rs.getInt("idCliente"));
					cliente.setValorFaturado(rs.getDouble("valorFaturado"));
					cliente.setValorSE(rs.getDouble("valorSE"));
					cliente.setValorGSurf(rs.getDouble("valorGSurf"));
					cliente.setQtdPDV(rs.getInt("qtdPDV"));
					cliente.setValorLyra(rs.getDouble("valorLyra"));
					cliente.setTipo_Cliente(rs.getString("tipo_Cliente"));
					cliente.setIdFaturamento(rs.getInt("idFaturamento"));
					cliente.setIdSuporte(rs.getInt("idSuporte"));
					cliente.setIdParceiro(rs.getInt("idParceiro"));

				} while (rs.next());
			}
			conexao.close();
			return cliente;
		}catch (SQLException e) {
			System.out.println("SQL erro: "+ e);
			return null;
		} catch (Exception e) {
			System.out.println("Geral erro: "+ e);
			return null;
		} 		
	}	


	public List <ClienteEntity> listarCliente(String razaoSocial){
		List <ClienteEntity> clientes = null;
		ClienteEntity cliente;
		try {
			conexao = Pool.getConnection();
			Statement st = conexao.createStatement();
			ResultSet rs = st.executeQuery("SELECT * FROM cliente WHERE razaoSocial LIKE  '%"+ razaoSocial +"%' ORDER BY razaoSocial;");
			if (rs.next()) {
				clientes = new ArrayList<ClienteEntity>();

				do {        
					cliente = new ClienteEntity();
					cliente.setTelefone(rs.getString("telefone"));
					cliente.setEmailCliente(rs.getString("emailCliente"));
					cliente.setRazaoSocial(rs.getString("razaoSocial"));
					cliente.setNomeFantasia(rs.getString("nomeFantasia"));
					cliente.setCnpj(rs.getLong("cnpj"));
					cliente.setQtdLojas(rs.getInt("qtdLojas"));
					cliente.setMovimentacao(rs.getString("movimentacao"));
					cliente.setDataMovimentacao(rs.getString("dataMovimentacao"));
					cliente.setResponsavel(rs.getString("responsavel"));
					cliente.setResponsavelEmail(rs.getString("responsavelEmail"));
					cliente.setAtendSuporte(rs.getString("atendSuporte"));
					cliente.setCliente(rs.getString("cliente"));
					cliente.setDataCancelamento(rs.getString("dataCancelamento"));
					cliente.setDiaFaturado(rs.getInt("diaFaturado"));
					cliente.setCidade(rs.getString("cidade"));
					cliente.setUf(rs.getString("uf"));
					cliente.setPolitica(rs.getString("politica"));
					cliente.setCategoria(rs.getString("categoria"));
					cliente.setData_atualizacao(rs.getTimestamp("data_atualizacao"));
					cliente.setUsuario_id(rs.getInt("usuario_id"));
					cliente.setIdCliente(rs.getInt("idCliente"));
					cliente.setIdCliente(rs.getInt("idCliente"));
					cliente.setValorFaturado(rs.getDouble("valorFaturado"));
					cliente.setValorSE(rs.getDouble("valorSE"));
					cliente.setValorGSurf(rs.getDouble("valorGSurf"));
					cliente.setQtdPDV(rs.getInt("qtdPDV"));
					cliente.setValorLyra(rs.getDouble("valorLyra"));
					cliente.setTipo_Cliente(rs.getString("tipo_Cliente"));
					cliente.setIdFaturamento(rs.getInt("idFaturamento"));
					cliente.setIdSuporte(rs.getInt("idSuporte"));
					cliente.setIdParceiro(rs.getInt("idParceiro"));
					clientes.add(cliente);  
				} while (rs.next());
			}
			conexao.close();
		} catch (SQLException e) {
			System.out.println("SQL erro: "+ e);
		} catch (Exception e) {
			System.out.println("Geral erro: "+ e);
		}
		return clientes;		
	}


	public String buscarDivergencia(int idCliente){
		try{
			String divergencia = null;
			conexao = Pool.getConnection();
			Statement st = conexao.createStatement();
			ResultSet rs = st.executeQuery("Select DC.tipo from cliente C inner join divergenciaCliente DC "
					+ "on C.idCliente = DC.cliente_idCliente where C.idCliente = "+ idCliente +";");
			conexao.close();
			if (rs.next()) {
				do {      
					divergencia = rs.getString("tipo");
				}while(rs.next());
			}
			return divergencia;
		}catch(Exception e){
			return null;
		}
	}
	public String buscarSoftwareHouse(int idCliente){
		try{
			String divergencia = null;
			conexao = Pool.getConnection();
			Statement st = conexao.createStatement();
			ResultSet rs = st.executeQuery("Select SH.nome from cliente C inner join SoftwareHouse SH "
					+ "on C.idCliente = SH.cliente_idCliente where C.idCliente = "+ idCliente +";");
			conexao.close();
			if (rs.next()) {
				do {      
					divergencia = rs.getString("tipo");
				}while(rs.next());
			}
			return divergencia;
		}catch(Exception e){
			return null;
		}
	}
	public String buscarParceiro(int idCliente){
		try{
			String divergencia = null;
			conexao = Pool.getConnection();
			Statement st = conexao.createStatement();
			ResultSet rs = st.executeQuery("Select P.nomeFantasia from cliente C"
					+ "inner join parceiroCliente PC "
					+ "inner join parceiro P"
					+ "on C.idCliente = PC.cliente_idCliente "
					+ "on P.id = PC.parceiro_id"
					+ "where C.idCliente = "+ idCliente +";");
			conexao.close();
			if (rs.next()) {
				do {      
					divergencia = rs.getString("tipo");
				}while(rs.next());
			}
			return divergencia;
		}catch(Exception e){
			return null;
		}
	}
	public ClienteEntity buscar(String razao) {
		ClienteEntity cliente = null;
		try	{
			conexao = Pool.getConnection();
			Statement st = conexao.createStatement();
			ResultSet rs = st.executeQuery("SELECT * FROM cliente WHERE razaoSocial LIKE '%"+ razao +"%';");
			if (rs.next()) {
				do {                      
					cliente = new ClienteEntity();
					cliente.setTelefone(rs.getString("telefone"));
					cliente.setEmailCliente(rs.getString("emailCliente"));
					cliente.setRazaoSocial(rs.getString("razaoSocial"));
					cliente.setNomeFantasia(rs.getString("nomeFantasia"));
					cliente.setCnpj(rs.getLong("cnpj"));
					cliente.setQtdLojas(rs.getInt("qtdLojas"));
					cliente.setMovimentacao(rs.getString("movimentacao"));
					cliente.setDataMovimentacao(rs.getString("dataMovimentacao"));
					cliente.setResponsavel(rs.getString("responsavel"));
					cliente.setResponsavelEmail(rs.getString("responsavelEmail"));
					cliente.setAtendSuporte(rs.getString("atendSuporte"));
					cliente.setCliente(rs.getString("cliente"));
					cliente.setDataCancelamento(rs.getString("dataCancelamento"));
					cliente.setDiaFaturado(rs.getInt("diaFaturado"));
					cliente.setCidade(rs.getString("cidade"));
					cliente.setUf(rs.getString("uf"));
					cliente.setPolitica(rs.getString("politica"));
					cliente.setCategoria(rs.getString("categoria"));
					cliente.setData_atualizacao(rs.getTimestamp("data_atualizacao"));
					cliente.setUsuario_id(rs.getInt("usuario_id"));
					cliente.setIdCliente(rs.getInt("idCliente"));
					cliente.setIdCliente(rs.getInt("idCliente"));
					cliente.setValorFaturado(rs.getDouble("valorFaturado"));
					cliente.setValorSE(rs.getDouble("valorSE"));
					cliente.setValorGSurf(rs.getDouble("valorGSurf"));
					cliente.setQtdPDV(rs.getInt("qtdPDV"));
					cliente.setValorLyra(rs.getDouble("valorLyra"));
					cliente.setTipo_Cliente(rs.getString("tipo_Cliente"));
					cliente.setIdFaturamento(rs.getInt("idFaturamento"));
					cliente.setIdSuporte(rs.getInt("idSuporte"));
					cliente.setIdParceiro(rs.getInt("idParceiro"));
				} while (rs.next());
			}
			conexao.close();			
		}catch (SQLException e) {
			System.out.println("SQL erro: "+ e);
		} catch (Exception e) {
			System.out.println("Geral erro: "+ e);
		} 
		return cliente;
	}

	public String buscarRazaoSocial(int idCliente){
		String razaoSocial = "";
		try	{
			conexao = Pool.getConnection();
			Statement st = conexao.createStatement();
			ResultSet rs = st.executeQuery("SELECT razaoSocial FROM cliente WHERE idCliente = "+ idCliente +";");
			if (rs.next()) {
				do {
					razaoSocial = rs.getString("razaoSocial");
				} while (rs.next());
			}
			conexao.close();			
		}catch (SQLException e) {
			System.out.println("SQL erro: "+ e);
		} catch (Exception e) {
			System.out.println("Geral erro: "+ e);
		} 
		return razaoSocial;
	}

	public void limparValorFaturado(){

		try {
			conexao = Pool.getConnection();
			Statement st;
			st = conexao.createStatement();
			st.execute("SET SQL_SAFE_UPDATES=0;");
			st.execute("UPDATE cliente SET valorFaturado=0;");
			conexao.close();
			System.out.println("Limpou valor Faturado!");
		} catch (SQLException e) {
			System.out.println("Não Limpou valor Faturado. Erro: "+e);
			e.printStackTrace();
		}

	}
	public void limparValorSE(){

		try {
			conexao = Pool.getConnection();
			Statement st;
			st = conexao.createStatement();
			st.execute("SET SQL_SAFE_UPDATES=0;");
			st.execute("UPDATE cliente SET valorSE=0;");
			conexao.close();
			System.out.println("Limpou valor Software Express!");
		} catch (SQLException e) {
			System.out.println("Não Limpou valor Software Express. Erro: "+e);
			e.printStackTrace();
		}

	}
	public void limparValorGSurf(){

		try {
			conexao = Pool.getConnection();
			Statement st;
			st = conexao.createStatement();
			st.execute("SET SQL_SAFE_UPDATES=0;");
			st.execute("UPDATE cliente SET valorGSurf=0;");
			conexao.close();
			System.out.println("Limpou valor GSurf!");
		} catch (SQLException e) {
			System.out.println("Não Limpou valor GSurf. Erro: "+e);
			e.printStackTrace();
		}

	}
	public void limparValorLyra(){

		try {
			conexao = Pool.getConnection();
			Statement st;
			st = conexao.createStatement();
			st.execute("SET SQL_SAFE_UPDATES=0;");
			st.execute("UPDATE cliente SET valorLyra=0;");
			conexao.close();
			System.out.println("Limpou valor Lyra!");
		} catch (SQLException e) {
			System.out.println("Não Limpou valor Lyra. Erro: "+e);
			e.printStackTrace();
		}

	}

}